﻿using ShapeManager;
using System.Collections.Generic;

namespace Commands
{
    public class CommandDeleteAll : ICommand
    {
        List<DrawObject> cloneList;
        /// <summary> 在应用“全部删除”功能之前，请先创建此命令。  </summary>
        public CommandDeleteAll(ShapeList shapeList)
        {
            cloneList = new List<DrawObject>();
            //  创建整个列表的副本:以相反的顺序添加对象，因为 ShapeList.Add 方法会将每个对象插入到列表的开头。
            int count = shapeList.Count;
            for (int i = count - 1; i >= 0; i--)
            {
                cloneList.Add(shapeList[i].Clone());
            }
        }
        /// <summary> 将克隆列表中的所有对象添加到列表中——与“删除所有”操作相反 </summary>
        public void Undo(ShapeList list)
        {
            foreach (DrawObject o in cloneList) list.Add(o);
        }
        /// <summary> 清晰列表 - 再次执行“全部删除”操作 </summary>
        public void Redo(ShapeList list)
        {
            list.Clear();
        }
    }
}
